Redis value
2022-04-21
Redis 除了对键的操作,当然也有不少对值的操作,通常,就比如 GETRANGE 即截取一部分变量/值信息,在 python 等语言中可以通过 [key:n] 来进行访问。
1 | 127.0.0.1:6379> GETRANGE key_name 1 4 |
就如上述 code 中,1 是一个起始数,而 4 是一个结尾数,该键的值为 0123456,因此该命令可以实现出截取键值的效果。
| Id | Name | Info | Command |
|---|---|---|---|
| 1 | GETRANGE | 截取键值并返回 | GETRANGE key_name start end |
| 2 | GETSET | 重新设置键值的时候返回旧的键值数据 | GETSET key_name "Hello,world" (上一个 key_name 的值是 0123456,因此返回的也是他) |
| 3 | GETBIT | 获取 key 所存储字符串的偏移量上的位(bit) | SETBIT value offset |
| 4 | SETRANGE | 通过偏移量来修改 key 中的值 | SETRANGE key_name 5 " World!" |
| 5 | SETBIT | 修改 key 所存储的字符串上的偏移量 (bit) | SETBIT key_name 2 1 |
| 6 | MGET | 获取一个或多个 key | MGET key_name1 key_name2 |
| 7 | MSET | 设置多个 key(依然会通过新值替换旧值) | MSET key_one "one" key_two "two" |
| 8 | MSETNX | 用于设置多个 key,遵循原子性操作(0失败,1成功) | MSETNX key_one "one" key_two "two" |
| 9 | SETNX | 如果 key 存在则什么都不做,不存在则插入 | SETNX key_name "1" (如果 key_name 存在则返回 0,否则返回 1) |
| 10 | STRLEN | 返回 key 值的字符串长度(如果存储的不是字符串类型则报错) | STRLEN key_name |
| 11 | APPEND | 该命令的好处就是直接在原有的键值中直接拼合 | APPEND key_one "Hello" and APPEND key_one " World!" show Hello World! |
获取或存储偏移量上的位
偏移量(Offset)简单概括就是存储地址和实际地址之间所存在的空段之间的距离,这通常被称之为有效地址或偏移量。
GETSET

我们以 GETSET 命令为例,首先 H 的二进制数为:01001000 ,通过 GETSET 分别输出一组后可以看到结果正是二进制数,因此本命令也就是获取 value 内的偏移量位数。
1 | 127.0.0.1:6379> GETBIT key_name 0 |
SETBIT

.SETBIT 在 redis 中,主要用于更改 key 的存储偏移量,如 SETBIT key_name 2 1 则表示将从0,左到右开始计数,替换原有的位数从而替换为 1,让其从 H 改为 h
.
1 | 127.0.0.1:6379> SETBIT key_name 2 1 |
SETRANGE

1 | 127.0.0.1:6379> SET key_name "Hello" |
自增与自减
| Id | Name | Info | Command |
|---|---|---|---|
| 1 | INCR | 将数值自曾(key 不存在时为 0,假设运行100次 INCR 则 数值也会被自曾到 100,每运行一次数值 +1) | INCR key_one |
| 2 | INCRBY | 在原有数值的基础上指定增加数值 | INCRBY key_one 10(假设 key 内值为2,则通过该命令增加 10,即12) |
| 3 | DECR | 在原有数值基础上来进行值减 | DECR key_one (假设key内值为100,运行100次则为0) |
| 4 | DECRBY | 在原有基础上自定义减值数 | DECRBY key_one 9 (假设 key 值内为 10,则直接减为 9) |
| 5 | INCRBYFLOAT | 为键的存储值中增加,可以执行像 1.03e+08 这样的科学计数法 |
INCRBYFLOAT key_name -0.01 \ INCRBYFLOAT key_name 1.03e08 |
INCRBYFLOAT
INCRBYFLOAT 的主要作用就是可以浮点数的增量以及支持诸如 1.03E+08 这样的科学计数法,此外无论加法计算所得到的精度实际长度有多长,该命令最终的结果只保留小数点后十七位数。
1 | 127.0.0.1:6379> SET key_name 1.04 |
⬅️ Go backe 是一个科学计数法符号,通常以 “E” 表示,在科学计数法中为了公式的简便,可以将 1.03 x10的次方简写为 1.03E+08 的形式
1.03 x 10的8次方,也就是 8个10相乘,之后在乘于 1.03,只保留十七位小数则应为
103000001.02999999999883585
